release: 0.12.0#350
Open
stainless-app[bot] wants to merge 6 commits into
Open
Conversation
cac40be to
c646eb3
Compare
…plates (#352) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
c646eb3 to
7ad5b19
Compare
7ad5b19 to
5eaf474
Compare
5eaf474 to
ec02cb4
Compare
ec02cb4 to
6d194bb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated Release PR
0.12.0 (2026-05-11)
Full Changelog: v0.11.0...v0.12.0
⚠ BREAKING CHANGES
Features
Bug Fixes
This pull request is managed by Stainless's GitHub App.
The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.
For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.
🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions
Greptile Summary
SGPSyncTracingProcessorandSGPAsyncTracingProcessorstateless by replacing the per-instance_spansdict with an idempotent_build_sgp_spanhelper; fixes dropped span-close events in cross-pod Temporal scenarios. Also removesAgentexTracingProcessorConfigas a default tracing processor (breaking change).EagerIterable/_EagerIterablepydantic custom type that eagerly consumes anyIterableinput (including generators), preserving the original container type for validation while always emitting a list during serialisation — fixing the pydantic generator-exhaustion bug.SGP_CLIENT_BASE_URLinto the two openai-agents templates and silences the openai-agents SDK's native tracer viaset_tracing_disabled(True)to prevent traces from leaking toapi.openai.com.Confidence Score: 4/5
Safe to merge with one fix: the temporal-openai-agents template should guard
add_tracing_processor_configbehind a credentials check like the sibling template does.One P1 finding:
workflow.py.j2callsadd_tracing_processor_configunconditionally, initialisingSGPClienteven with empty credentials, while the siblingacp.py.j2correctly guards the call. All other changes (stateless processor refactor,EagerIterable, f-string fix, template env-var wiring) are well-implemented and covered by tests.src/agentex/lib/cli/templates/temporal-openai-agents/project/workflow.py.j2
Important Files Changed
set_tracing_disabled(True)andsgp_base_url;add_tracing_processor_configis still called unconditionally unlike the guarded pattern in the siblingacp.py.j2template_spansdict and replaces with idempotent_build_sgp_spanhelper; sync processor lacks explicitself.disabledguard but delegates totracing.init(disabled=True)set_tracing_disabled(True)andsgp_base_url; correctly guardsadd_tracing_processor_configwithif SGP_API_KEY and SGP_ACCOUNT_IDEagerIterable/_EagerIterablePydantic custom type that eagerly consumes iterables, preserves original container types, and avoids the generator-exhaustion bug in Pydantic V2AgentexTracingProcessorConfigdefault and its lazy-init wrapper; breaking change aligned with the PR description_spansdict exists, two flushes per span lifecycle, and correct behavior when END arrives without a prior STARTEagerIterablecovering list, tuple, set, iterator, generator, map, frozenset, deque, and the special str-falls-back-to-list casefprefix to f-string in file type error message; one-line bug fixSequence Diagram
sequenceDiagram participant Agent participant SyncProcessor as SGPSyncTracingProcessor participant AsyncProcessor as SGPAsyncTracingProcessor participant SGPBackend as SGP Backend Note over SyncProcessor,AsyncProcessor: Stateless — no _spans dict Agent->>SyncProcessor: on_span_start(span) SyncProcessor->>SyncProcessor: _build_sgp_span(span) → set start_time SyncProcessor->>SGPBackend: "flush(blocking=False)" Agent->>SyncProcessor: on_span_end(span) SyncProcessor->>SyncProcessor: _build_sgp_span(span) → set start_time + end_time SyncProcessor->>SGPBackend: "flush(blocking=False)" Agent->>AsyncProcessor: on_spans_start([span1, span2]) AsyncProcessor->>AsyncProcessor: [_build_sgp_span(s) for s in spans] AsyncProcessor->>SGPBackend: upsert_batch(items) — 1 HTTP call Agent->>AsyncProcessor: on_spans_end([span1, span2]) AsyncProcessor->>AsyncProcessor: build spans + set end_time AsyncProcessor->>SGPBackend: upsert_batch(items) — 1 HTTP call Note over AsyncProcessor,SGPBackend: Cross-pod Temporal: END with no prior START still upserts complete spanComments Outside Diff (1)
src/agentex/lib/cli/templates/temporal-openai-agents/project/workflow.py.j2, line 42-50 (link)SGP_API_KEYandSGP_ACCOUNT_IDare absent, whereas the siblingacp.py.j2template correctly guards the call. With empty credentialsSGPSyncTracingProcessorstill callstracing.init(SGPClient(api_key="", …))— constructing a client and initialising the tracing subsystem — before thedisabled=Trueflag suppresses flushes. Users who generate this template without SGP credentials will still hit that initialisation path on every import.Prompt To Fix With AI
Prompt To Fix All With AI
Reviews (5): Last reviewed commit: "release: 0.12.0" | Re-trigger Greptile